#ifndef OBJECT_BUILDER_H
#define OBJECT_BUILDER_H

#include "circle3d.h"
#include "cylinder3d.h"

/** 将圆盘的三角形扇数据存入vertex数组中
 *
 * 参数:
 *  start: 数据在vertex数组中的开始位置
 * 返回: vertex数组的结束位置
 */
int appendCircle(float *vertex, int start, Circle3D *circle, int numPoints);
/** 返回vertex数组的结束位置
 *
 * 参数:
 *  start: 数据在vertex数组中的开始位置
 * 返回: vertex数组的结束位置
 */
int appendOpenCylinder(float *vertex, int start, Cylinder3D *cylinder, int numPoints);

inline int circleVertexSize(int numPoints) {
    // 三角形扇。中心点 + 边缘点 + 边缘第一点重复。 
    return 1 + (numPoints + 1);
};

inline int openCylinderVertexSize(int numPoints) {
    // 三角形带。上边缘的点 + 下编译的点 + 上下边缘重复第一点。
    return (numPoints + 1) * 2;
};

#endif // OBJECT_BUILDER_H
